package com.cictec.middleware.tde.rm.protocol.rm.encode;

import java.nio.ByteBuffer;

import com.cictec.middleware.commons.utils.BinaryUtils;
import com.cictec.middleware.tde.exception.MessageEncoderException;
import com.cictec.middleware.tde.rm.protocol.AbstractMessageEncoder;
import com.cictec.middleware.tde.rm.protocol.TerminalMessage;
import com.cictec.middleware.tde.rm.protocol.annotion.TerminalMessageEncoder;
import com.cictec.middleware.tde.rm.protocol.rm.message.Rm0x80PlatformMessage;
import com.cictec.middleware.tde.rm.protocol.rm.utils.RmBinaryUtils;

/**
 * 0x80 指令应答
 * 
 * @author Administrator
 *
 */
@TerminalMessageEncoder(0x80)
public class Rm0x80Encoder extends AbstractMessageEncoder {

	@Override
	public byte[] encode(TerminalMessage msg) throws MessageEncoderException {
		Rm0x80PlatformMessage pr = (Rm0x80PlatformMessage) msg;

		ByteBuffer out = ByteBuffer.allocate(256);

		RmBinaryUtils.dateToDwordRM(pr.getResponseTime(), out);
		BinaryUtils.intToUnsignedByte(pr.getResponseMessageId(), out);
		BinaryUtils.intToUnsignedByte(pr.getResponseMessageSequence(), out);
		BinaryUtils.intToUnsignedByte(pr.getResponseType(), out);
		BinaryUtils.intToWord(pr.getReserved(), out);

		return toBytes(out);
	}

}
